home *** CD-ROM | disk | FTP | other *** search
Modula Implementation | 1994-09-22 | 2.7 KB | 117 lines |
- IMPLEMENTATION MODULE LongInOut;
-
- IMPORT InOut, Conversions;
- FROM SYSTEM IMPORT ADDRESS, LONG;
-
- TYPE AddCard = RECORD
- CASE : BOOLEAN OF
- TRUE : A : ADDRESS |
- FALSE: C : LONGCARD
- END
- END;
-
- VAR T : ARRAY[0..80] OF CHAR;
- Le : CARDINAL;
- res : LONGCARD;
- Dummy : BOOLEAN;
-
- CONST NUL = 0C;
-
- PROCEDURE Length(VAR S : ARRAY OF CHAR) : CARDINAL;
- VAR i : INTEGER;
- BEGIN
- i:=0;
- WHILE (S[i]>' ') & (i<HIGH(S)) DO INC(i) END;
- IF S[i]>' ' THEN INC(i) END;
- RETURN i
- END Length;
-
- PROCEDURE WriteLongInt(x : LONGINT;
- L : CARDINAL); (* min. length *)
- BEGIN
- Conversions.ConvertToString(ABS(x),10,x<LONG(0),T,Dummy);
- InOut.WriteStringRight(T,L)
- END WriteLongInt;
-
- PROCEDURE WriteLongCard(x : LONGCARD;
- L : CARDINAL); (* min. length *)
- BEGIN
- Conversions.ConvertToString(x,10,FALSE,T,Dummy);
- InOut.WriteStringRight(T,L)
- END WriteLongCard;
-
- PROCEDURE WriteLongOct(x : LONGCARD;
- L : CARDINAL); (* min. length *)
- BEGIN
- Conversions.ConvertToString(x,10B,FALSE,T,Dummy);
- Le:=Length(T);
- T[Le] :='B';
- T[Le+1]:=NUL;
- InOut.WriteStringRight(T,L)
- END WriteLongOct;
-
- PROCEDURE WriteLongHex(x : LONGCARD;
- L : CARDINAL); (* min. length *)
- BEGIN
- Conversions.ConvertToString(x,10H,FALSE,T,Dummy);
- Le:=Length(T);
- T[Le] :='H';
- T[Le+1]:=NUL;
- InOut.WriteStringRight(T,L)
- END WriteLongHex;
-
- PROCEDURE WriteAdr (x : ADDRESS;
- L : CARDINAL); (* min. length *)
- VAR R : AddCard;
- BEGIN
- R.A:=x;
- WriteLongCard(R.C,L)
- END WriteAdr;
-
- PROCEDURE WriteAdrOct(x : ADDRESS;
- L : CARDINAL); (* min. length *)
- VAR R : AddCard;
- BEGIN
- R.A:=x;
- WriteLongOct(R.C,L)
- END WriteAdrOct;
-
- PROCEDURE WriteAdrHex(x : ADDRESS;
- L : CARDINAL); (* min. length *)
- VAR R : AddCard;
- BEGIN
- R.A:=x;
- WriteLongHex(R.C,L)
- END WriteAdrHex;
-
- PROCEDURE ReadLongInt(VAR x : LONGINT);
- BEGIN
- InOut.ReadString(T);
- IF InOut.Done THEN
- InOut.ConvFromStr(T,res,MAX(LONGINT),TRUE,Done);
- IF Done THEN x:=res END
- ELSE
- Done:=FALSE
- END
- END ReadLongInt;
-
- PROCEDURE ReadLongCard(VAR x : LONGCARD);
- BEGIN
- InOut.ReadString(T);
- IF InOut.Done THEN
- InOut.ConvFromStr(T,res,MAX(LONGCARD),FALSE,Done);
- IF Done THEN x:=res END
- ELSE
- Done:=FALSE
- END
- END ReadLongCard;
-
- PROCEDURE ReadAdr(VAR A : ADDRESS);
- VAR R : AddCard;
- BEGIN
- ReadLongCard(R.C);
- IF Done THEN A:=R.A END
- END ReadAdr;
-
- END (* IMPLEMENTATION MODULE *) LongInOut.
-